#pragma once

#include "thread.h"
#include "core/noncopy.h"

#include <functional>

namespace renderit
{
	namespace thread
	{
		enum EThread
		{
			EThread_Main,
			EThread_IO,
			EThread_Worker
		};
		
		class thread_pool : public core::noncopy
		{
		public:
			virtual ~thread_pool() {}

		public:
			virtual void dispatch(std::function<void()>&& func) {}
		};

		class main_thread : public thread_pool
		{
		public:
			virtual ~main_thread() {}

		public:
			// Only Called From Main-Thread
			virtual void do_work() {}
		};
	}
}